﻿using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using SisEagle.View.Web.Base;
using SisEagle.IView.Cadastro;
using System.Data;

namespace SisEagle.View.Web.Cadastro
{
    public partial class Clientes : WebPageBase, IClientesView
    {
        #region Singleton
        private SisEagleBO.ClientesBO _ClientesBusiness;
        private SisEagleBO.ClientesBO ClientesBusiness
        {
            get
            {
                if (_ClientesBusiness == null)
                    _ClientesBusiness = new SisEagleBO.ClientesBO();

                return _ClientesBusiness;
            }
        }

        #endregion

        #region Page-Load
        protected override void OnInit(EventArgs e)
        {
                base.OnInit(e);
                if (!DesignMode)
                {
                    inicialize();
                }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
          
            if (!IsPostBack)
            {
                

            }
        }

        #endregion

        #region Internal
        private void inicialize()
        {
            btnLocalizar.Click += (btnLocalizar_Click);
            GridClientes.PageIndexChanging += (GridClientes_PageIndexChanging);
            GridClientes.RowDataBound += GridClientes_RowDataBound;
        }

        
        void GridClientes_PageIndexChanging(object sender,GridViewPageEventArgs e)
        {
            GridClientes.PageIndex = e.NewPageIndex;
            GridClientes.DataSource = BuscarClientes();
            GridClientes.DataBind();
        }

        void GridClientes_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            int TotalRow = ListaResultado.Tables["Clientes"].Rows.Count;
            AjustaTotalizador(TotalRow,null, string.Empty,null, string.Empty, e);
        }

        private DataView BuscarClientes()
        {
            DataView dv = new DataView();

            dv = ClientesBusiness.FindAll().Tables[0].DefaultView;

            return dv;

        }

 
        protected void btnLocalizar_Click(object sender, ImageClickEventArgs e)
        {
            //GridClientes.Visible = true;
            CarregaGrid();
        }

        private void CarregaGrid()
        {


            GridClientes.DataSource = ListaResultado;
            GridClientes.DataBind();
        }


        #endregion

        #region Binding
        public int CodCliente
        {
            get
            {
                if (string.IsNullOrEmpty(txtCodigo.Text) || !(UtilsNumber.IsNumber(txtCodigo.Text)))
                {
                    
                    return 0;
                }
                else
                    return Convert.ToInt32(txtCodigo.Text);

            }
            set
            {
                txtCodigo.Text = value.ToString();
            }
        }

        public string Nome
        {
            get
            {
                if (string.IsNullOrEmpty(txtNomeCliente.Text))
                    return string.Empty;

                else
                    return txtNomeCliente.Text.TrimStart();
            }
            set
            {
                txtNomeCliente.Text = value;
            }
        }

        public string CPF
        {
            get
            {
                if (string.IsNullOrEmpty(txtCPF.Text))
                    return string.Empty;

                else
                {
                    if (UtilsNumber.ValidaCPF(txtCPF.Text.TrimStart()))
                    {
                        return txtCPF.Text.TrimStart();
                    }
                    else
                    {
                        return string.Empty;
                    }

                }
            }
            set
            {
                txtCPF.Text = value;
            }
        }

        public string Bairro
        {
            get
            {
                if (string.IsNullOrEmpty(txtBairro.Text))
                    return string.Empty;

                else
                    return txtBairro.Text.TrimStart();
            }
            set
            {
                txtBairro.Text = value;
            }
        }

        public int CodEstado
        {
            get
            {
                if(string.IsNullOrEmpty(UcCmbEstados.ComboEstados.SelectedValue) || !(UtilsNumber.IsNumber(UcCmbEstados.ComboEstados.SelectedValue)))
                {
                    return 0;
                }
                else
                    return Convert.ToInt32(UcCmbEstados.ComboEstados.SelectedValue);

            }
            set
            {

                UcCmbEstados.ComboEstados.SelectedValue = value.ToString();
            }
        }

        public string Email
        {
            get
            {
                if (string.IsNullOrEmpty(txtEmail.Text))
                    return string.Empty;

                else
                    return txtEmail.Text.TrimStart();
            }
            set
            {
                txtEmail.Text = value;
            }
        }

        public DataSet ListaResultado
        {
            get
            {
                if (CodCliente != 0)
                    return ClientesBusiness.FindBy_CodCliente(CodCliente);

                if (!string.IsNullOrEmpty(Nome))
                    return ClientesBusiness.FindBy_Nome(Nome);

                if (!string.IsNullOrEmpty(CPF))
                    return ClientesBusiness.FindBy_CPF(CPF);

                if (!string.IsNullOrEmpty(Bairro))
                    return ClientesBusiness.FindBy_Bairro(Bairro);

                if (!string.IsNullOrEmpty(Email))
                    return ClientesBusiness.FindBy_Email(Email);

                if (CodEstado != 0)
                    return ClientesBusiness.FindBy_codEstado(CodEstado);

                else
                    return ClientesBusiness.FindAll();

            }
            set
            {
                ListaResultado = value;
                CarregaGrid();
            }
        }

        #endregion
    }
}